#include <iostream>
#include <unistd.h>
#include <cstring>


// 测试管道读写
int main(int argc, char *argv[]) {
    int pipefd[2];
    if (pipe(pipefd) == -1) {
        perror("pipe error");
        return 1;
    }

    pid_t pid = fork();

    if (pid == -1) {
        perror("fork error");
        return 2;
    }
    if (pid == 0) {
        // 子进程
        close(pipefd[0]); // 关闭读
        write(pipefd[1], "Hello from child", 16);
        close(pipefd[1]); // 关闭写
        exit(EXIT_SUCCESS); 
    }

    close(pipefd[1]); // 关闭写
    char buf[100] = {0};
    read(pipefd[0], buf, sizeof(buf));
    printf("Parent received: %s\n", buf);

    return 0;
}






// int main() {
//     int fds[2];
//     char buf[100];
//     int len;

//     if (pipe(fds) == -1) {
//         perror("make pipe");
//         exit (1);
//     }

//     while (fgets(buf, 100, stdin)) {
//         len = strlen(buf);
//         // write into pipe
//         if (write(fds[1], buf, len) != len) {
//             perror("write to pipe");
//             break;
//         }
//         memset(buf, 0x00, sizeof(buf));

//         if ((len = read(fds[0], buf, 100)) == -1) {
//             perror("read from pipe");
//             break;
//         }

//         if (write(1, buf, len) != len) {
//             perror("write to stdout");
//             break;
//         }
//     }
// }